package com.ruoyi.system.service;

import com.ruoyi.common.core.domain.base.datam.WiOrganB;
import com.ruoyi.system.domain.SysRoleOrgan;
import com.ruoyi.system.domain.vo.WiOrganBTreeSelect;

import java.util.List;

/**
 * 角色和水管机构关联Service接口
 * 
 * @author hwd
 * @date 2023-03-16
 */
public interface ISysRoleOrganService 
{
//    /**
//     * 查询角色和水管机构关联
//     *
//     * @param roleId 角色和水管机构关联主键
//     * @return 角色和水管机构关联
//     */
//    public SysRoleOrgan selectSysRoleOrganByRoleId(Long roleId);

    /**
     * 查询角色和水管机构关联
     *
     * @param roleId 角色和水管机构关联主键
     * @return 角色和水管机构关联
     */
    public List<SysRoleOrgan> selectSysRoleOrganByRoleId(Long roleId);

    /**
     * 查询角色和水管机构关联列表
     * 
     * @param sysRoleOrgan 角色和水管机构关联
     * @return 角色和水管机构关联集合
     */
    public List<SysRoleOrgan> selectSysRoleOrganList(SysRoleOrgan sysRoleOrgan);

    /**
     * 新增角色和水管机构关联
     * 
     * @param sysRoleOrgan 角色和水管机构关联
     * @return 结果
     */
    public int insertSysRoleOrgan(SysRoleOrgan sysRoleOrgan);

    /**
     * 修改角色和水管机构关联
     * 
     * @param sysRoleOrgan 角色和水管机构关联
     * @return 结果
     */
    public int updateSysRoleOrgan(SysRoleOrgan sysRoleOrgan);

    /**
     * 批量删除角色和水管机构关联
     * 
     * @param roleIds 需要删除的角色和水管机构关联主键集合
     * @return 结果
     */
    public int deleteSysRoleOrganByRoleIds(Long[] roleIds);

    /**
     * 删除角色和水管机构关联信息
     * 
     * @param roleId 角色和水管机构关联主键
     * @return 结果
     */
    public int deleteSysRoleOrganByRoleId(Long roleId);

    List<WiOrganBTreeSelect> selectWiOrganBTreeList(WiOrganB wiOrganB);

    public List<WiOrganBTreeSelect> buildWiOrganBTreeSelect(List<WiOrganB> wiOrganBS);

    public List<WiOrganB> buildWiOrganBTree(List<WiOrganB> wiOrganBS);

    /**
     * 获取机构树形结构
     * @return
     */
    List<WiOrganB> treeList();

    /**
     * 查询角色和水管机构关联
     *
     * @param roleId 角色和水管机构关联主键
     * @return 角色和水管机构关联
     */
    public List<String> selectOrganCdListByRoleId(Long roleId);
}
